/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package otcapp.controlador.modelocombobox;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import javax.swing.DefaultComboBoxModel;
import otcapp.entidades.Asunto;

/**
 *
 * @author diego
 */
public class ModeloComboAsuntoPieza extends DefaultComboBoxModel<Object> {

    private List<Asunto> listaAsunto;

    public ModeloComboAsuntoPieza() {
        listaAsunto = new ArrayList<>();
        addElement("Seleccione un Asunto");


    }

    public ModeloComboAsuntoPieza(List<Asunto> nuevalista) {

        listaAsunto = nuevalista;
        addElement("Seleccione un Asunto");
        for (Asunto asunto : nuevalista) {
            addElement(asunto.getNombreAsunto());

        }


    }

    public void setListaCombo(List<Asunto> nuevalista) {
        listaAsunto = nuevalista;
        removeAllElements();
        addElement("Seleccione un Asunto");
        for (Asunto asunto : nuevalista) {
            addElement(asunto.getNombreAsunto());

        }

    }

    public Asunto getAsuntoSeleccionado() {
        Asunto asuntoEncontrado = null;
        for (Asunto asunto : listaAsunto) {
            if (asunto.getNombreAsunto().equals(super.getSelectedItem().toString())) {
                asuntoEncontrado = asunto;
            }
        }

        return asuntoEncontrado;

    }

    public void agergarAsunto(Asunto nuevoAsunto) {
        if (listaAsunto == null) {
            listaAsunto = new ArrayList<Asunto>();
            addElement("Seleccione un Asunto");
        }
        for (Asunto asunto : listaAsunto) {
            if (asunto.getNombreAsunto().equals(nuevoAsunto.getNombreAsunto())) {
                return;
            }
        }
        listaAsunto.add(nuevoAsunto);
        super.addElement(nuevoAsunto.getNombreAsunto());
    }

    public void setAsuntoSeleccionado(Asunto itemSeleccionado) {
        if (listaAsunto != null) {
            for (Asunto asunto : listaAsunto) {
                if (asunto.getNombreAsunto().equals(itemSeleccionado.getNombreAsunto())) {
                    setSelectedItem(itemSeleccionado.getNombreAsunto());
                }
            }
        }
    }

    public void ordenar() {
        Collections.sort(listaAsunto, new OrdenarAsuntoPorNombre());
        removeAllElements();
        addElement("Seleccione un Asunto");

        for (Asunto asunto : listaAsunto) {
            addElement(asunto.getNombreAsunto());
        }
    }

    public void quitarTipo(Asunto asunto) {
        for (int i = 0; i < listaAsunto.size(); i++) {
            if (listaAsunto.get(i).getId() == asunto.getId()) {
                listaAsunto.remove(i);
                removeElement(asunto.getNombreAsunto());
            }
        }
    }
}

class OrdenarAsuntoPorNombre implements Comparator<Asunto> {

    @Override
    public int compare(Asunto a1, Asunto a2) {
        return a1.getNombreAsunto().compareToIgnoreCase(a2.getNombreAsunto());
    }
}
